package cn.java.chart;

import java.awt.Font;
import java.io.File;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;

public class PieDemo {
	
	public static void main(String[] args) {
		//实例化图表区域对象
		DefaultPieDataset dataset = new DefaultPieDataset() ;
		//向图表区域的数据集合中添加数据
		dataset.setValue("北京", 3) ;
		dataset.setValue("深圳", 6) ;
		dataset.setValue("上海", 2) ;
		
		JFreeChart chart = ChartFactory.createPieChart3D("用户统计报表（所属单位）", //title-主标题名称
														 dataset, //dataset-图表区域对象
														 true, //legend-是否显示子标题（true或false）
														 true, //tooltips-是否生成提示（true或false）
														 true) ; //urls-是否生成url链接（true或false）
		//处理图形显示中文乱码问题
		//1、处理主标题乱码
		chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18)) ;
		//2、处理子标题乱码
		chart.getLegend().setItemFont(new Font("宋体", Font.BOLD, 15)) ;
		//3、处理图表区域乱码
		//获取图表区域对象
		PiePlot3D piePlot3D = (PiePlot3D) chart.getPlot() ;
		//处理图表区域内的乱码
		piePlot3D.setLabelFont(new Font("宋体", Font.BOLD, 15)) ;
		
		//设置图形的生成格式(上海 2 (10%))
		String format = "{0} {1} ({2})" ;
		StandardPieSectionLabelGenerator generator = new StandardPieSectionLabelGenerator(format) ;
		piePlot3D.setLabelGenerator(generator) ;
		
		//在D盘目录下生成图表图片
		try {
			File file = new File("D:/chart.jpeg") ;
			ChartUtilities.saveChartAsJPEG(file, chart, 800, 600) ;
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//使用ChartFrame对象显示图表
		ChartFrame frame = new ChartFrame("xyz", chart) ;
		//设置可显
		frame.setVisible(true) ;
		//显示图表
		frame.pack() ;
	}

}
